home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 422_02 / misc / byteswap.c < prev    next >
C/C++ Source or Header  |  1994-03-20  |  623b  |  29 lines

  1. /*
  2.  * Example of using a union to overlay int (16 bit) and char (8 bit)
  3.  * data. In this program, a 16 bit int is written to memory, and then
  4.  * the high and low nibbles are exchanged by reading them as chars
  5.  * defined in a union with the int.
  6.  *
  7.  * Compile command: cc byteswap -fop
  8.  */
  9. #include <stdio.h>
  10.  
  11. main()
  12. {
  13.     union {
  14.         int Idata;
  15.         struct {
  16.             char byte1;
  17.             char byte2; } Bdata; } data;
  18.  
  19.     int i;
  20.     char t;
  21.  
  22.     for(i=0; i < 10; ++i) {
  23.         data.Idata = i;
  24.         t = data.Bdata.byte1;
  25.         data.Bdata.byte1 = data.Bdata.byte2;
  26.         data.Bdata.byte2 = t;
  27.         printf("%04x <-> %04x\n", i, data.Idata); }
  28. }
  29.